{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "3e568797-5c91-4495-affa-32533f8c3059",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "dotenv:  E:\\work\\code\\ai\\.env\n"
     ]
    }
   ],
   "source": [
    "import os\n",
    "from openai import OpenAI\n",
    "from dotenv import load_dotenv, find_dotenv\n",
    "\n",
    "def get_openai_key():\n",
    "    print(\"dotenv: \",find_dotenv())\n",
    "    _ = load_dotenv(find_dotenv())\n",
    "    # api_key = os.environ['OPENAI_API_KEY']\n",
    "    return OpenAI(\n",
    "        api_key = os.environ.get(\"ARK_API_KEY\"),\n",
    "    base_url = \"https://ark.cn-beijing.volces.com/api/v3\",)\n",
    "\n",
    "client = get_openai_key()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "96e7c0ae-1499-4893-919c-07bf80487649",
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_completion(prompt, model=\"ep-20250103110319-28xth\",temperature = 0):\n",
    "    \n",
    "    completion = client.chat.completions.create( \n",
    "    model = model,  # your model endpoint ID\n",
    "    messages = [\n",
    "        {\"role\": \"system\", \"content\": \"你是豆包，是由字节跳动开发的 AI 人工智能助手\"},\n",
    "        {\"role\": \"user\", \"content\": prompt},\n",
    "    ],\n",
    "    temperature=temperature\n",
    "    )\n",
    "    return completion.choices[0].message.content"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "b279e89d-7248-449d-8adb-45f7316bc4ef",
   "metadata": {},
   "outputs": [],
   "source": [
    "lamp_review = \"\"\"\n",
    "我需要一盏漂亮的卧室灯，这款灯具有额外的储物功能，价格也不算太高。\\\n",
    "我很快就收到了它。在运输过程中，我们的灯绳断了，但是公司很乐意寄送了一个新的。\\\n",
    "几天后就收到了。这款灯很容易组装。我发现少了一个零件，于是联系了他们的客服，他们很快就给我寄来了缺失的零件！\\\n",
    "在我看来，Lumina 是一家非常关心顾客和产品的优秀公司！\n",
    "\"\"\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "1d1e90f1-ac47-4c88-b01d-7dbaf347f4ed",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "正面\n"
     ]
    }
   ],
   "source": [
    "prompt = f\"\"\"\n",
    "    以下用三个引号分隔的产品评论的情感是什么？\n",
    "\n",
    "    请用一个单词回答，正面 或 负面。\n",
    "\n",
    "    评论文本： '''{lamp_review} '''\n",
    "\"\"\"\n",
    "response = get_completion(prompt)\n",
    "print(response)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "1eba7f91-93a4-466f-81b7-b1bb3ea0ac52",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "满意，赞赏，认可\n"
     ]
    }
   ],
   "source": [
    "prompt = f\"\"\"\n",
    "    识别以下评论的作者表达的情感，包含不超过五项，将答案格式化为以都好分隔的单词列表。\n",
    "\n",
    "    评论文本： '''{lamp_review} '''\n",
    "\"\"\"\n",
    "response = get_completion(prompt)\n",
    "print(response)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "dd089e79-b0b0-47e6-8934-0d271072e39b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "否\n"
     ]
    }
   ],
   "source": [
    "prompt = f\"\"\"\n",
    "    识别以下评论的作者是否表达了愤怒？ 评论用三个引号分隔，给出是或否的答案。\n",
    "\n",
    "    评论文本： '''{lamp_review} '''\n",
    "\"\"\"\n",
    "response = get_completion(prompt)\n",
    "print(response)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "84571e0b-7b34-4711-a7a3-8e1e87d2d6c0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{\n",
      "\"物品\": \"卧室灯\",\n",
      "\"品牌\": \"Lumina\"\n",
      "}\n"
     ]
    }
   ],
   "source": [
    "prompt = f\"\"\"\n",
    "    从评论中识别以下项目：\n",
    "    - 评论这购买的物品\n",
    "    - 制造该物品的公司\n",
    "    \n",
    "    评论文本用三个引号分隔。将你的响应格式化为以\"物品\"和 \"品牌\" 为键的JSON 对象。\n",
    "    如果信息不存在，使用\"未知\" 作为值。 \n",
    "    让回应尽可能简短。 \n",
    "    \n",
    "    评论文本： '''{lamp_review} '''\n",
    "\"\"\"\n",
    "response = get_completion(prompt)\n",
    "print(response)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "03e763c1-50f4-4e5a-a2ef-7a769333e54e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{\n",
      "\"情感倾向\": \"正面\",\n",
      "\"是否生气\": false,\n",
      "\"物品\": \"卧室灯\",\n",
      "\"品牌\": \"Lumina\"\n",
      "}\n"
     ]
    }
   ],
   "source": [
    "prompt = f\"\"\"\n",
    "    从评论中识别以下项目：\n",
    "    - 情绪(正面或负面)\n",
    "    - 评论人是否表达了愤怒(是或否)\n",
    "    - 评论这购买的物品\n",
    "    - 制造该物品的公司\n",
    "    \n",
    "    评论文本用三个引号分隔。将你的响应格式化为以\"情感倾向\"、\"是否生气\"、 \"物品\"和 \"品牌\" 为键的JSON 对象。\n",
    "    如果信息不存在，使用\"未知\" 作为值。 \n",
    "    让回应尽可能简短。 \n",
    "    将\"是否生气\" 值格式化为布尔值。\n",
    "    \n",
    "    评论文本： '''{lamp_review} '''\n",
    "\"\"\"\n",
    "response = get_completion(prompt)\n",
    "print(response)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "4216f9e4-cdf5-48e9-96c0-ff26256ea0c7",
   "metadata": {},
   "outputs": [],
   "source": [
    "story = \"\"\"\n",
    "在政府最近进行的一项调查中，要求公共部门的员工对他们所在部门的满意度进行评分。\n",
    "调查结果显示，NASA 是最受欢迎的部门，满意度为 95％。\n",
    "\n",
    "一位 NASA 员工 John Smith 对这一发现发表了评论，他表示：\n",
    "“我对 NASA 排名第一并不感到惊讶。这是一个与了不起的人们和令人难以置信的机会共事的好地方。我为成为这样一个创新组织的一员感到自豪。”\n",
    "\n",
    "NASA 的管理团队也对这一结果表示欢迎，主管 Tom Johnson 表示：\n",
    "“我们很高兴听到我们的员工对 NASA 的工作感到满意。\n",
    "我们拥有一支才华横溢、忠诚敬业的团队，他们为实现我们的目标不懈努力，看到他们的辛勤工作得到回报是太棒了。”\n",
    "\n",
    "调查还显示，社会保障管理局的满意度最低，只有 45％的员工表示他们对工作满意。\n",
    "政府承诺解决调查中员工提出的问题，并努力提高所有部门的工作满意度。\n",
    "\"\"\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "dfffb26b-2d28-48e4-a1a7-9daa70c67b0d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[\"部门满意度调查\", \"NASA满意度\", \"员工评论\", \"管理团队回应\", \"问题解决承诺\"]\n"
     ]
    }
   ],
   "source": [
    "prompt = f\"\"\"\n",
    "    请确定一下文本中讨论的五个主题。\n",
    "    每个主题用1-2个词概括。\n",
    "    请输出一个课解析的Python列表， 每个元素的一个字符串，展示了一个主题。\n",
    "    j\n",
    "    给定文本：''' {story}'''\n",
    "\"\"\"\n",
    "\n",
    "response = get_completion(prompt)\n",
    "print(response) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "edea323a-a9ad-4bd3-b8bb-5f4fcffa1ee9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[\n",
      "{\n",
      "\"美国航空航天局\": 1\n",
      "},\n",
      "{\n",
      "\"当地政府\": 0\n",
      "},\n",
      "{\n",
      "\"工程\": 0\n",
      "},\n",
      "{\n",
      "\"员工满意度\": 1\n",
      "},\n",
      "{\n",
      "\"联邦政府\": 0\n",
      "}\n",
      "]\n"
     ]
    }
   ],
   "source": [
    "prompt = f\"\"\"\n",
    "    判断主题列表中的每一项是否是给定文本中的一个话题。 \n",
    "    以列表的形式给出答案，每个元素是一个Json 对象，键为对应主题，值为对应的0或1. \n",
    "    主题列表： 美国航空航天局，当地政府、工程、 员工满意度、联邦政府\n",
    "\n",
    "    给定文本: '''{story}'''\n",
    "    \"\"\" \n",
    "response = get_completion(prompt) \n",
    "print(response)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "c88a8d86-920c-4340-bd91-d40e2bd8a784",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'美国航空航天局': 1, '当地政府': 0, '工程': 0, '员工满意度': 1, '联邦政府': 0}\n",
      "提醒: 关于美国航天局的最新消息\n"
     ]
    }
   ],
   "source": [
    "prompt = f\"\"\"\n",
    "    判断主题列表中的每一项是否是给定文本中的一个话题。 \n",
    "    以列表的形式给出答案，每个元素是一个Json 对象，键为对应主题，值为对应的0或1. \n",
    "    主题列表： 美国航空航天局，当地政府、工程、 员工满意度、联邦政府\n",
    "\n",
    "    给定文本: '''{story}'''\n",
    "    \"\"\" \n",
    "response = get_completion(prompt)  \n",
    "result_list =  eval(response)\n",
    "topic_dict = {list(i.keys())[0] : list(i.values())[0] for i in result_list}\n",
    "print(topic_dict)\n",
    "if (topic_dict['美国航空航天局'] == 1):\n",
    "    print(\"提醒: 关于美国航天局的最新消息\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "66ad117a-a62a-4ec8-837e-7bd9af0a8fae",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.21"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
